public class JavaKE1 {
    public static void main(String[] args) {
        // 1. 整数类型
        byte byteVar = 127; // byte: 8位有符号整数，范围：-128 到 127
        short shortVar = 32767; // short: 16位有符号整数，范围：-32768 到 32767
        int intVar = 2147483647; // int: 32位有符号整数，范围：-2^31 到 2^31-1
        long longVar = 9223372036854775807L; // long: 64位有符号整数，范围：-2^63 到 2^63-1，注意后缀L

        // 2. 浮点类型
        float floatVar = 3.14f; // float: 32位单精度浮点数，注意后缀f
        double doubleVar = 3.141592653589793; // double: 64位双精度浮点数

        // 3. 字符类型
        char charVar = 'A'; // char: 16位Unicode字符，范围：0 到 65535

        // 4. 布尔类型
        boolean booleanVar = true; // boolean: 只有两个值：true 或 false

        // 5. 字符串类型（引用类型）
        String stringVar = "Hello, Java!"; // String: 字符串，是引用类型

        // 输出所有变量的值
        System.out.println("byteVar: " + byteVar);
        System.out.println("shortVar: " + shortVar);
        System.out.println("intVar: " + intVar);
        System.out.println("longVar: " + longVar);
        System.out.println("floatVar: " + floatVar);
        System.out.println("doubleVar: " + doubleVar);
        System.out.println("charVar: " + charVar);
        System.out.println("booleanVar: " + booleanVar);
        System.out.println("stringVar: " + stringVar);

        // 6. 类型转换
        int intFromDouble = (int) doubleVar; // 强制类型转换，将double转换为int，会丢失小数部分
        System.out.println("intFromDouble: " + intFromDouble);

        double doubleFromInt = intVar; // 隐式类型转换，将int转换为double
        System.out.println("doubleFromInt: " + doubleFromInt);

        // 7. 数组类型
        int[] intArray = {1, 2, 3, 4, 5}; // 定义一个int类型的数组
        System.out.println("intArray: " + intArray);

        // 8. 对象类型（引用类型）
        Object obj = new Object(); // 创建一个Object对象
        System.out.println("obj: " + obj);

        //算术运算符
        int a=8 , b=3;
        //加法
        int sum=a+b;
        System.out.println(sum);
        //减法
        int difference=a-b;
        System.out.println(difference);
        //乘法
        int product=a*b;
        System.out.println(product);
        //除法
        int quotient=a/b;
        System.out.println(quotient);
        //取模
        int remainder=a%b;
        System.out.println(remainder);
        //自增
        a++;
        System.out.println(a);
        //自减
        b--;
        System.out.println(b);

        //关系运算符
        int x=5 , y=8;
        //等于
        System.out.println(x + " == " + y + ": " + (x == y));  // false
        //不等于
        System.out.println(x + "!=" + y+ ":" + (x!=y)); //true
        //大于
        System.out.println(x>y);
        //小于r
        System.out.println(x<y);
        //大于等于
        System.out.println(x>=y);
        //小于等于
        System.out.println(x<=y);

        //逻辑运算符
        boolean p=true,q=false;
        //逻辑与（&&）
        System.out.println(p&&q);
        //逻辑或（||）
        System.out.println(p||q);
        //逻辑非（ ！）
        System.out.println(!p);

        //位运算符
        int m=5;// 二进制：0101
        int n=3;// 二进制： 0011
        //按位与(&) 两个都为1时
        System.out.println(m&n);
        //按位或
        System.out.println(m|n);
        //按位异或（^）
        System.out.println(m^n);
        //按位取反（~）得到补码，减一得到反码，反码取反得到原码
        System.out.println(~m);
        //左移（<<) 低位补0
        System.out.println(m<<2);
        //右移（>>）正数空位补0，负数空位补1
        System.out.println(m>>1);
        //无符号右移（>>>）空位补0
        System.out.println(m>>>1);

        //赋值运算符
        int num=10;
        //简单赋值（=）
        int value=num;
        System.out.println(value);
        //复合赋值（+=，-=，*=，/=，%=，&=，|=，^=,<<=,>>=,>>>=）
        num+=5;//num=num+5
        System.out.println(num);

        //三元运算符
        int score=75;
        //条件 ？ 表达式1 ： 表达式2
        String result =(score<=60) ? "及格" : "不及格";
        System.out.println(result);

        //instanceof运算符
        String text="Hello";
        //检查对象是否是特定类的实例
        boolean isString=text instanceof String;
        System.out.println(isString);

        //运算符优先级
        int calc=5+3*2-4/2;
        System.out.println(calc);



    }
}
